import {
  AudioMessage,
  BaseMessage,
  FileMessage,
  ImageMessage,
  NoticeMessage,
  TextMessage,
  VideoMessage,
  CombinedMessage,
  RepliedMsg,
  UnsentRepliedMsg,
  MessageStatus,
  Chat,
  MessageList,
  ContactList,
  ConversationList,
  ConversationItem,
  MessageInput,
  Header,
  Empty,
  RecalledMessage,
  rootStore,
  RootContext,
  RootProvider,
  RootConsumer,
  Provider,
  useClient,
  useConversations,
  useHistoryMessages,
  useSDK,
  useIsMobile,
  useScreen,
  useConversationContext,
  useChatroomContext,
  useChatContext,
  useAddressContext,
  useThreadContext,
  Thread,
  UserProfile,
  Blocklist,
  Chatroom,
  ChatroomMember,
  ChatroomMessage,
  ContactDetail,
  ContactItem,
  GroupDetail,
  GroupMember,
  UserCardMessage,
  UserSelect,
  usePinnedMessage,
  PinnedMessage,
} from './module/index';

// CallKit 组件和类型导出
import CallKit, {
  InvitationInfo,
  InvitationNotificationProps,
  CallKitProps,
  VideoWindowProps,
  LayoutMode,
  InvitationContent,
  CallKitRef,
} from './module/callkit';

const UIKitProvider = Provider;
import {
  Avatar,
  Button,
  Input,
  Badge,
  Checkbox,
  Dropdown,
  Icon,
  List,
  Modal,
  Popover,
  Switch,
  Tooltip,
  ScrollList,
  Collapse,
  UserItem,
} from './component/entry';

import { eventHandler, EventHandlerData, EventName } from './eventHandler';

import { MessageInputProps } from './module/index';
const MessageEditor = MessageInput;
type MessageEditorProps = MessageInputProps;

export type { MessageEditorProps };
export {
  AudioMessage,
  BaseMessage,
  FileMessage,
  ImageMessage,
  NoticeMessage,
  TextMessage,
  VideoMessage,
  CombinedMessage,
  RepliedMsg,
  UnsentRepliedMsg,
  MessageStatus,
  Chat,
  MessageList,
  ContactList,
  ConversationList,
  ConversationItem,
  MessageInput,
  MessageEditor,
  Header,
  Empty,
  PinnedMessage,
  RecalledMessage,
  rootStore,
  RootContext,
  RootProvider,
  RootConsumer,
  Provider,
  useClient,
  useConversations,
  useHistoryMessages,
  useSDK,
  useConversationContext,
  useChatroomContext,
  useChatContext,
  useAddressContext,
  useThreadContext,
  usePinnedMessage,
  useIsMobile,
  useScreen,
  Avatar,
  Button,
  Input,
  Badge,
  Checkbox,
  Dropdown,
  Icon,
  List,
  Modal,
  Popover,
  UIKitProvider,
  Switch,
  Tooltip,
  ScrollList,
  Collapse,
  Thread,
  UserProfile,
  Blocklist,
  Chatroom,
  ChatroomMember,
  ChatroomMessage,
  eventHandler,
  ContactDetail,
  ContactItem,
  GroupDetail,
  GroupMember,
  UserCardMessage,
  UserItem,
  UserSelect,
  CallKit,
  InvitationContent,
};

export type {
  AvatarProps,
  ButtonProps,
  ButtonShape,
  ButtonSize,
  ButtonType,
  InputProps,
  BadgeProps,
  CheckboxProps,
  DropdownProps,
  IconProps,
  ICON_TYPES,
  ListProps,
  ModalProps,
  PopoverProps,
  SwitchProps,
  ScrollListProps,
  CollapseProps,
  UserItemProps,
} from './component/entry';

export type {
  AudioMessageProps,
  BaseMessageProps,
  FileMessageProps,
  ImageMessageProps,
  ImagePreviewProps,
  NoticeMessageProps,
  TextMessageProps,
  VideoMessageProps,
  MessageStatusProps,
  CombinedMessageProps,
  RepliedMsgProps,
  UnsentRepliedMsgProps,
  ChatProps,
  MsgListProps,
  ConversationItemProps,
  ConversationListProps,
  ConversationData,
  MessageInputProps,
  MoreActionProps,
  RecorderProps,
  EmojiProps,
  SelectedControlsProps,
  SuggestListProps,
  TextareaProps,
  HeaderProps,
  EmptyProps,
  RecalledMessageProps,
  RootStore,
  InitConfig,
  MessageStore,
  Message,
  SelectedMessage,
  Typing,
  ConversationStore,
  AT_TYPE,
  Conversation,
  CurrentConversation,
  ById,
  AddressStore,
  MemberRole,
  MemberItem,
  GroupItem,
  AppUserInfo,
  ThreadStore,
  ThreadData,
  CurrentThread,
  ProviderProps,
  ContextProps,
  ThreadProps,
  UserProfileProps,
  BlocklistProps,
  ContactListProps,
  ContactDetailProps,
  GroupDetailProps,
  GroupMemberProps,
  UserCardMessageProps,
  UserSelectProps,
  PinnedMessageProps,
} from './module/index';

// CallKit 类型导出
export type {
  InvitationInfo,
  InvitationNotificationProps,
  CallKitProps,
  VideoWindowProps,
  LayoutMode,
  CallKitRef,
};

export type { EventHandlerData, EventName };
